#pragma once 

class Resource
{
public:
	Resource()
	{
		m_strName.clear();
	}

public:
	void SetResourceName( std::string name ) { m_strName = name; }
	std::string & GetResourceName() { return m_strName; }

protected:
	std::string	m_strName;
};

class SharableResource : public Resource
{
public:
	SharableResource()
		: Resource(),
		m_uRefCount( 0 )
	{}

public:
	void	AddRef()	{ ++m_uRefCount; }
	void	SubRef()	{ --m_uRefCount; }

	UINT	GetRef()	{ return m_uRefCount; }

protected:
	UINT	m_uRefCount;
};